package nmt.banweb.client;

/**
 * Marks courses as either blacklisted or not based on terms in "CurrBlacklistTerms".
 * @author Benjamin Bean
 */
public class SearchBlacklist {
	/* Should contain the current blacklist terms at all times
	 * (after the user has submitted the term/chosen to delete it)
	 */
	SearchSearchtermsContainer CurrBlacklistTerms;
	
	/**
	 * Initialize object with empty objects.
	 */
	SearchBlacklist()
	{
		CurrBlacklistTerms = new SearchSearchtermsContainer();
	}
	
	/**
	 * Refines the courses found with "AllSubjectsContainer" with the new searchterm and
	 * adds "Searchterm" to "CurrBlacklistTerms".
	 * @param Searchterm The new searchterm to refine results with.
	 * @param AllSubjectsContainer The container of all course subjects, so that courses can be marked as blacklisted
	 */
	void RefineSearch(SearchSearchterm Searchterm, CourseSubjectContainer AllSubjectsContainer)
	{
	}
	
	/**
	 * Adds a search term to "CurrBlacklistTerms" and updates courses.
	 * The only courses that should need to be searched again would be those in "CurrResults"
	 * since they are the only ones that have passed previous search criteria.
	 * @param Searchterm The term to add
	 * @param AllSubjectsContainer The container of all course subjects, so that courses can be marked as blacklisted
	 * @return The number of blacklisted courses
	 */
	public int AddSearchterm(SearchSearchterm Searchterm, CourseSubjectContainer AllSubjectsContainer)
	{
		return 0;
	}
	
	/**
	 * Removes a search term from "CurrSearchterms" and updates the blacklisted courses from the CourseSubjectContainer.
	 * Blacklisted courses will need to be completely updated, again.
	 * @param Searchterm The term to add
	 * @param AllSubjectsContainer The container of all course subjects, so that courses can be marked as blacklisted.
	 * @return The number of blacklisted courses.
	 */
	public int RemoveSearchterm(SearchSearchterm Searchterm, CourseSubjectContainer AllSubjectsContainer)
	{
		return 0;
	}
	
	public SearchSearchtermsContainer GetAllTerms()
	{
		return null;
	}
}
